{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Import pandas to read csv file"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# conda activate iWM\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "ds = pd.read_csv('subset_ceramics_v21032023.csv')"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Preprocess Data-set"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Remove columns that are not of interest to the model "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "ds_preprocessed = ds.drop(columns=['find_number', 'material_category', 'start_date',\n",
    "       'end_date', 'level_1_of_the_functional_classification',\n",
    "       'ceramics_rim_eve_estimated_vessel_equivalent',\n",
    "       'ceramics_base_eve_estimated_vessel_equivalent',\n",
    "       'ceramics_decoration_technique',\n",
    "       'ceramics_image_type', 'ceramics_mark'])"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Remove rows where values are NaNs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "material                                         0\n",
       "level_2_of_the_functional_classification         0\n",
       "ceramics_reconstructed_object_diameter_in_mm     0\n",
       "ceramics_reconstructed_object_height_in_mm       0\n",
       "ceramics_surface_treatment                      52\n",
       "dtype: int64"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ds_preprocessed.isna().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "material                                        0\n",
       "level_2_of_the_functional_classification        0\n",
       "ceramics_reconstructed_object_diameter_in_mm    0\n",
       "ceramics_reconstructed_object_height_in_mm      0\n",
       "ceramics_surface_treatment                      0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ds_preprocessed = ds_preprocessed.dropna()\n",
    "ds_preprocessed.isna().sum()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Reduce data-set to a binary classification problem with only 'Consumption: drinking' and 'Food consumption: plate, dish, bowl' as categories."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0       Food consumption: plate, dish, bowl\n",
       "1       Food consumption: plate, dish, bowl\n",
       "2                     Consumption: drinking\n",
       "3                     Consumption: drinking\n",
       "4                     Consumption: drinking\n",
       "                       ...                 \n",
       "3404    Food consumption: plate, dish, bowl\n",
       "3405    Food consumption: plate, dish, bowl\n",
       "3406    Food consumption: plate, dish, bowl\n",
       "3407    Food consumption: plate, dish, bowl\n",
       "3409    Food consumption: plate, dish, bowl\n",
       "Name: level_2_of_the_functional_classification, Length: 2972, dtype: category\n",
       "Categories (2, object): ['Consumption: drinking', 'Food consumption: plate, dish, bowl']"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ds_preprocessed = ds_preprocessed.query(\"level_2_of_the_functional_classification == ['Consumption: drinking', 'Food consumption: plate, dish, bowl']\")  \n",
    "ds_preprocessed['level_2_of_the_functional_classification'] = ds_preprocessed['level_2_of_the_functional_classification'].astype('category')\n",
    "ds_preprocessed['level_2_of_the_functional_classification']"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create target one-hot vector"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Consumption: drinking                   841\n",
       "Food consumption: plate, dish, bowl    2131\n",
       "dtype: int64"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Create target output\n",
    "target = pd.get_dummies(ds_preprocessed['level_2_of_the_functional_classification'])\n",
    "target.sum()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Convert 'material' and 'ceramics_surface_treatment' in to integer values for use as input to the machine learning model and extract the features."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "ds_preprocessed['material_categorized'] = ds_preprocessed['material'].astype('category').cat.codes + 1\n",
    "ds_preprocessed['treatment_categorized'] = ds_preprocessed['ceramics_surface_treatment'].astype('category').cat.codes + 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ceramics_reconstructed_object_diameter_in_mm</th>\n",
       "      <th>ceramics_reconstructed_object_height_in_mm</th>\n",
       "      <th>material_categorized</th>\n",
       "      <th>treatment_categorized</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>270</td>\n",
       "      <td>60</td>\n",
       "      <td>32</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>260</td>\n",
       "      <td>38</td>\n",
       "      <td>29</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>100</td>\n",
       "      <td>25</td>\n",
       "      <td>9</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>120</td>\n",
       "      <td>150</td>\n",
       "      <td>10</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>110</td>\n",
       "      <td>40</td>\n",
       "      <td>15</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3404</th>\n",
       "      <td>140</td>\n",
       "      <td>20</td>\n",
       "      <td>19</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3405</th>\n",
       "      <td>120</td>\n",
       "      <td>25</td>\n",
       "      <td>32</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3406</th>\n",
       "      <td>260</td>\n",
       "      <td>50</td>\n",
       "      <td>28</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3407</th>\n",
       "      <td>240</td>\n",
       "      <td>28</td>\n",
       "      <td>3</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3409</th>\n",
       "      <td>220</td>\n",
       "      <td>42</td>\n",
       "      <td>19</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2972 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      ceramics_reconstructed_object_diameter_in_mm  \\\n",
       "0                                              270   \n",
       "1                                              260   \n",
       "2                                              100   \n",
       "3                                              120   \n",
       "4                                              110   \n",
       "...                                            ...   \n",
       "3404                                           140   \n",
       "3405                                           120   \n",
       "3406                                           260   \n",
       "3407                                           240   \n",
       "3409                                           220   \n",
       "\n",
       "      ceramics_reconstructed_object_height_in_mm  material_categorized  \\\n",
       "0                                             60                    32   \n",
       "1                                             38                    29   \n",
       "2                                             25                     9   \n",
       "3                                            150                    10   \n",
       "4                                             40                    15   \n",
       "...                                          ...                   ...   \n",
       "3404                                          20                    19   \n",
       "3405                                          25                    32   \n",
       "3406                                          50                    28   \n",
       "3407                                          28                     3   \n",
       "3409                                          42                    19   \n",
       "\n",
       "      treatment_categorized  \n",
       "0                         9  \n",
       "1                         5  \n",
       "2                         8  \n",
       "3                        19  \n",
       "4                        25  \n",
       "...                     ...  \n",
       "3404                      1  \n",
       "3405                      9  \n",
       "3406                      6  \n",
       "3407                     25  \n",
       "3409                      1  \n",
       "\n",
       "[2972 rows x 4 columns]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ds_features = ds_preprocessed.drop(columns=['level_2_of_the_functional_classification', 'material', 'ceramics_surface_treatment'])\n",
    "ds_features"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Split data-set into train and test data-sets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(ds_features, target,test_size=0.2, random_state=0, shuffle=True, stratify=target)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Consumption: drinking                   673\n",
       "Food consumption: plate, dish, bowl    1704\n",
       "dtype: int64"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train.sum()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Create NN model for classification"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From C:\\Users\\Peter\\AppData\\Local\\miniconda3\\Lib\\site-packages\\keras\\src\\losses.py:2976: The name tf.losses.sparse_softmax_cross_entropy is deprecated. Please use tf.compat.v1.losses.sparse_softmax_cross_entropy instead.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "from tensorflow import keras\n",
    "from numpy.random import seed\n",
    "seed(1)\n",
    "from tensorflow.random import set_seed\n",
    "set_seed(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From C:\\Users\\Peter\\AppData\\Local\\miniconda3\\Lib\\site-packages\\keras\\src\\backend.py:1398: The name tf.executing_eagerly_outside_functions is deprecated. Please use tf.compat.v1.executing_eagerly_outside_functions instead.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "inputs = keras.Input(shape=X_train.shape[1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "hidden_layer = keras.layers.Dense(10, activation=\"relu\")(inputs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "output_layer = keras.layers.Dense(2, activation=\"softmax\")(hidden_layer)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"model\"\n",
      "_________________________________________________________________\n",
      " Layer (type)                Output Shape              Param #   \n",
      "=================================================================\n",
      " input_1 (InputLayer)        [(None, 4)]               0         \n",
      "                                                                 \n",
      " dense (Dense)               (None, 10)                50        \n",
      "                                                                 \n",
      " dense_1 (Dense)             (None, 2)                 22        \n",
      "                                                                 \n",
      "=================================================================\n",
      "Total params: 72 (288.00 Byte)\n",
      "Trainable params: 72 (288.00 Byte)\n",
      "Non-trainable params: 0 (0.00 Byte)\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model = keras.Model(inputs=inputs, outputs=output_layer)\n",
    "model.summary()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Compile and run the model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From C:\\Users\\Peter\\AppData\\Local\\miniconda3\\Lib\\site-packages\\keras\\src\\optimizers\\__init__.py:309: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "model.compile(optimizer='adam', loss=keras.losses.CategoricalCrossentropy())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/100\n",
      "WARNING:tensorflow:From C:\\Users\\Peter\\AppData\\Local\\miniconda3\\Lib\\site-packages\\keras\\src\\utils\\tf_utils.py:492: The name tf.ragged.RaggedTensorValue is deprecated. Please use tf.compat.v1.ragged.RaggedTensorValue instead.\n",
      "\n",
      "75/75 [==============================] - 1s 1ms/step - loss: 8.3130\n",
      "Epoch 2/100\n",
      "75/75 [==============================] - 0s 968us/step - loss: 1.8140\n",
      "Epoch 3/100\n",
      "75/75 [==============================] - 0s 981us/step - loss: 0.4693\n",
      "Epoch 4/100\n",
      "75/75 [==============================] - 0s 973us/step - loss: 0.4145\n",
      "Epoch 5/100\n",
      "75/75 [==============================] - 0s 967us/step - loss: 0.3990\n",
      "Epoch 6/100\n",
      "75/75 [==============================] - 0s 998us/step - loss: 0.3732\n",
      "Epoch 7/100\n",
      "75/75 [==============================] - 0s 982us/step - loss: 0.3369\n",
      "Epoch 8/100\n",
      "75/75 [==============================] - 0s 987us/step - loss: 0.3215\n",
      "Epoch 9/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.3099\n",
      "Epoch 10/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.3073\n",
      "Epoch 11/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.2967\n",
      "Epoch 12/100\n",
      "75/75 [==============================] - 0s 965us/step - loss: 0.2910\n",
      "Epoch 13/100\n",
      "75/75 [==============================] - 0s 987us/step - loss: 0.2859\n",
      "Epoch 14/100\n",
      "75/75 [==============================] - 0s 963us/step - loss: 0.2817\n",
      "Epoch 15/100\n",
      "75/75 [==============================] - 0s 983us/step - loss: 0.2815\n",
      "Epoch 16/100\n",
      "75/75 [==============================] - 0s 984us/step - loss: 0.2795\n",
      "Epoch 17/100\n",
      "75/75 [==============================] - 0s 958us/step - loss: 0.2710\n",
      "Epoch 18/100\n",
      "75/75 [==============================] - 0s 988us/step - loss: 0.2678\n",
      "Epoch 19/100\n",
      "75/75 [==============================] - 0s 983us/step - loss: 0.2631\n",
      "Epoch 20/100\n",
      "75/75 [==============================] - 0s 975us/step - loss: 0.2633\n",
      "Epoch 21/100\n",
      "75/75 [==============================] - 0s 973us/step - loss: 0.2524\n",
      "Epoch 22/100\n",
      "75/75 [==============================] - 0s 977us/step - loss: 0.2514\n",
      "Epoch 23/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.2445\n",
      "Epoch 24/100\n",
      "75/75 [==============================] - 0s 992us/step - loss: 0.2452\n",
      "Epoch 25/100\n",
      "75/75 [==============================] - 0s 982us/step - loss: 0.2498\n",
      "Epoch 26/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.2399\n",
      "Epoch 27/100\n",
      "75/75 [==============================] - 0s 1000us/step - loss: 0.2347\n",
      "Epoch 28/100\n",
      "75/75 [==============================] - 0s 987us/step - loss: 0.2331\n",
      "Epoch 29/100\n",
      "75/75 [==============================] - 0s 965us/step - loss: 0.2299\n",
      "Epoch 30/100\n",
      "75/75 [==============================] - 0s 953us/step - loss: 0.2270\n",
      "Epoch 31/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.2265\n",
      "Epoch 32/100\n",
      "75/75 [==============================] - 0s 991us/step - loss: 0.2250\n",
      "Epoch 33/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.2217\n",
      "Epoch 34/100\n",
      "75/75 [==============================] - 0s 978us/step - loss: 0.2222\n",
      "Epoch 35/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.2201\n",
      "Epoch 36/100\n",
      "75/75 [==============================] - 0s 995us/step - loss: 0.2201\n",
      "Epoch 37/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.2193\n",
      "Epoch 38/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.2135\n",
      "Epoch 39/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.2141\n",
      "Epoch 40/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.2124\n",
      "Epoch 41/100\n",
      "75/75 [==============================] - 0s 897us/step - loss: 0.2092\n",
      "Epoch 42/100\n",
      "75/75 [==============================] - 0s 988us/step - loss: 0.2100\n",
      "Epoch 43/100\n",
      "75/75 [==============================] - 0s 996us/step - loss: 0.2059\n",
      "Epoch 44/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.2036\n",
      "Epoch 45/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.2073\n",
      "Epoch 46/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.2053\n",
      "Epoch 47/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.2037\n",
      "Epoch 48/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.2015\n",
      "Epoch 49/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1977\n",
      "Epoch 50/100\n",
      "75/75 [==============================] - 0s 994us/step - loss: 0.2000\n",
      "Epoch 51/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1962\n",
      "Epoch 52/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1964\n",
      "Epoch 53/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1936\n",
      "Epoch 54/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1958\n",
      "Epoch 55/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1950\n",
      "Epoch 56/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1889\n",
      "Epoch 57/100\n",
      "75/75 [==============================] - 0s 983us/step - loss: 0.1865\n",
      "Epoch 58/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1845\n",
      "Epoch 59/100\n",
      "75/75 [==============================] - 0s 986us/step - loss: 0.1833\n",
      "Epoch 60/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1809\n",
      "Epoch 61/100\n",
      "75/75 [==============================] - 0s 996us/step - loss: 0.1788\n",
      "Epoch 62/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1860\n",
      "Epoch 63/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1756\n",
      "Epoch 64/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1755\n",
      "Epoch 65/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1749\n",
      "Epoch 66/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1726\n",
      "Epoch 67/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1698\n",
      "Epoch 68/100\n",
      "75/75 [==============================] - 0s 997us/step - loss: 0.1716\n",
      "Epoch 69/100\n",
      "75/75 [==============================] - 0s 989us/step - loss: 0.1715\n",
      "Epoch 70/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1688\n",
      "Epoch 71/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1673\n",
      "Epoch 72/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1653\n",
      "Epoch 73/100\n",
      "75/75 [==============================] - 0s 992us/step - loss: 0.1653\n",
      "Epoch 74/100\n",
      "75/75 [==============================] - 0s 953us/step - loss: 0.1675\n",
      "Epoch 75/100\n",
      "75/75 [==============================] - 0s 996us/step - loss: 0.1657\n",
      "Epoch 76/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1620\n",
      "Epoch 77/100\n",
      "75/75 [==============================] - 0s 991us/step - loss: 0.1584\n",
      "Epoch 78/100\n",
      "75/75 [==============================] - 0s 982us/step - loss: 0.1623\n",
      "Epoch 79/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1607\n",
      "Epoch 80/100\n",
      "75/75 [==============================] - 0s 1000us/step - loss: 0.1558\n",
      "Epoch 81/100\n",
      "75/75 [==============================] - 0s 943us/step - loss: 0.1563\n",
      "Epoch 82/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1637\n",
      "Epoch 83/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1551\n",
      "Epoch 84/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1541\n",
      "Epoch 85/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1512\n",
      "Epoch 86/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1509\n",
      "Epoch 87/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1498\n",
      "Epoch 88/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1514\n",
      "Epoch 89/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1487\n",
      "Epoch 90/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1501\n",
      "Epoch 91/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1474\n",
      "Epoch 92/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1502\n",
      "Epoch 93/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1496\n",
      "Epoch 94/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1458\n",
      "Epoch 95/100\n",
      "75/75 [==============================] - 0s 981us/step - loss: 0.1447\n",
      "Epoch 96/100\n",
      "75/75 [==============================] - 0s 987us/step - loss: 0.1514\n",
      "Epoch 97/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1445\n",
      "Epoch 98/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1414\n",
      "Epoch 99/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1411\n",
      "Epoch 100/100\n",
      "75/75 [==============================] - 0s 1ms/step - loss: 0.1462\n"
     ]
    }
   ],
   "source": [
    "history = model.fit(X_train, y_train, epochs=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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2mvasGFDq/uode78/e9/17JlyzR//nz98Ic/1IYNG/Td735XoVBIFRUV6Xq29d8Uat01N954oyKRiEaPHi2/369YLKZFixZpzpw5kkSte1A2td2zZ48GDhyYcX8gEFC/fv0Ouf4EFXhu7ty52rZtm9auXWu7KUekXbt26frrr1dlZaUKCgpsN+eIFo/HNXHiRP30pz+VJJ1yyinatm2b7rrrLlVUVFhu3ZHloYce0gMPPKCVK1dqzJgx2rx5s+bNm6ehQ4dS6yMcQz8tlJWVye/3t1r9sHfvXg0ePNhSq44s1157rZ544gn95S9/0bBhw9LHBw8erMbGRh04cCDjfGrfdZs2bdK+ffv0+c9/XoFAQIFAQGvWrNEvf/lLBQIBDRo0iFrnyJAhQ3TSSSdlHDvxxBP1/vvvS1K6nvw35dDdcMMNuvHGG3XZZZfp5JNP1te//nV973vf0+LFiyVR656UTW0HDx6sffv2Zdzf1NSk/fv3H3L9CSothEIhTZgwQatXr04fi8fjWr16tSZPnmyxZYc/Y4yuvfZaPfroo3r++ec1atSojPsnTJigYDCYUfvt27fr/fffp/ZdNG3aNG3dulWbN29O/0ycOFFz5sxJ/51a58aUKVNaLbN/5513NGLECEnSqFGjNHjw4IxaRyIRvfrqq9S6i+rr6+XzZX5l+f1+xeNxSdS6J2VT28mTJ+vAgQPatGlT+pznn39e8XhckyZNOrQGHNJU3CPQqlWrTDgcNvfdd5958803zZVXXmn69Olj9uzZY7tph7Wrr77alJaWmhdeeMHs3r07/VNfX58+56qrrjLDhw83zz//vNm4caOZPHmymTx5ssVWHzlarvoxhlrnyvr1600gEDCLFi0y7777rnnggQdMUVGRuf/++9PnLFmyxPTp08f88Y9/NG+88Ya58MILWTLbDRUVFeYzn/lMennyH/7wB1NWVmb+3//7f+lzqHX31dTUmNdff928/vrrRpK54447zOuvv2527txpjMmutueee6455ZRTzKuvvmrWrl1rjj/+eJYn95Rf/epXZvjw4SYUCpnTTjvNrFu3znaTDnuS2vxZsWJF+pyDBw+aa665xvTt29cUFRWZiy66yOzevdteo48g/xxUqHXu/OlPfzJjx4414XDYjB492ixfvjzj/ng8bm655RYzaNAgEw6HzbRp08z27dsttfbwFYlEzPXXX2+GDx9uCgoKzDHHHGNuvvlmE41G0+dQ6+77y1/+0uZ/oysqKowx2dX2k08+MZdffrnp3bu3KSkpMVdccYWpqak55LY5xrTY1g8AACCPMEcFAADkLYIKAADIWwQVAACQtwgqAAAgbxFUAABA3iKoAACAvEVQAQAAeYugAgAA8hZBBcBhz3EcPfbYY7abAaAHEFQAHJJvfvObchyn1c+5555ru2kAjgAB2w0AcPg799xztWLFioxj4XDYUmsAHEnoUQFwyMLhsAYPHpzx07dvX0mJYZlly5Zp5syZKiws1DHHHKNHHnkk4/Fbt27Vl770JRUWFqp///668sorVVtbm3HOvffeqzFjxigcDmvIkCG69tprM+6vqqrSRRddpKKiIh1//PF6/PHH0/d9+umnmjNnjgYMGKDCwkIdf/zxrYIVgPxEUAHQ42655RZdcskl2rJli+bMmaPLLrtMb731liSprq5O55xzjvr27asNGzbo4Ycf1nPPPZcRRJYtW6a5c+fqyiuv1NatW/X444/ruOOOy3iNhQsX6l//9V/1xhtv6LzzztOcOXO0f//+9Ou/+eabeuqpp/TWW29p2bJlKisr864AALrvkK+/DOCoVlFRYfx+v+nVq1fGz6JFi4wxxkgyV111VcZjJk2aZK6++mpjjDHLly83ffv2NbW1ten7//znPxufz2f27NljjDFm6NCh5uabb263DZLMf/zHf6Rv19bWGknmqaeeMsYYc8EFF5grrrgiN28YgKeYowLgkJ111llatmxZxrF+/fql/z558uSM+yZPnqzNmzdLkt566y2NHz9evXr1St8/ZcoUxeNxbd++XY7j6KOPPtK0adM6bMO4cePSf+/Vq5dKSkq0b98+SdLVV1+tSy65RK+99ppmzJihWbNm6fTTT+/WewXgLYIKgEPWq1evVkMxuVJYWJjVecFgMOO24ziKx+OSpJkzZ2rnzp168sknVVlZqWnTpmnu3Ln6r//6r5y3F0BuMUcFQI9bt25dq9snnniiJOnEE0/Uli1bVFdXl77/r3/9q3w+n0444QQVFxdr5MiRWr169SG1YcCAAaqoqND999+vpUuXavny5Yf0fAC8QY8KgEMWjUa1Z8+ejGOBQCA9YfXhhx/WxIkTdcYZZ+iBBx7Q+vXrdc8990iS5syZox/96EeqqKjQggUL9PHHH+u6667T17/+dQ0aNEiStGDBAl111VUaOHCgZs6cqZqaGv31r3/Vddddl1X7br31Vk2YMEFjxoxRNBrVE088kQ5KAPIbQQXAIXv66ac1ZMiQjGMnnHCC3n77bUmJFTmrVq3SNddcoyFDhujBBx/USSedJEkqKirSM888o+uvv16nnnqqioqKdMkll+iOO+5IP1dFRYUaGhr085//XN///vdVVlamr371q1m3LxQK6aabbtI//vEPFRYW6otf/KJWrVqVg3cOoKc5xhhjuxEAjlyO4+jRRx/VrFmzbDcFwGGIOSoAACBvEVQAAEDeYo4KgB7F6DKAQ0GPCgAAyFsEFQAAkLcIKgAAIG8RVAAAQN4iqAAAgLxFUAEAAHmLoAIAAPIWQQUAAOSt/w8PqEfKXvFlzgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "sns.lineplot(x=history.epoch, y=history.history['loss'])\n",
    "plt.xlabel('Epochs')\n",
    "plt.ylabel('Loss')\n",
    "plt.grid()  #just add this\n",
    "plt.show()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Predict and diagnose model results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "19/19 [==============================] - 0s 1ms/step\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Consumption: drinking</th>\n",
       "      <th>Food consumption: plate, dish, bowl</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3.196223e-12</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>8.497015e-01</td>\n",
       "      <td>0.150299</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.132027e-12</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>7.746588e-01</td>\n",
       "      <td>0.225341</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2.671231e-02</td>\n",
       "      <td>0.973288</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>590</th>\n",
       "      <td>3.122591e-01</td>\n",
       "      <td>0.687741</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>591</th>\n",
       "      <td>2.246366e-01</td>\n",
       "      <td>0.775363</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>592</th>\n",
       "      <td>6.589257e-01</td>\n",
       "      <td>0.341074</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>593</th>\n",
       "      <td>1.415237e-02</td>\n",
       "      <td>0.985848</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>594</th>\n",
       "      <td>9.941242e-01</td>\n",
       "      <td>0.005876</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>595 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Consumption: drinking  Food consumption: plate, dish, bowl\n",
       "0             3.196223e-12                             1.000000\n",
       "1             8.497015e-01                             0.150299\n",
       "2             1.132027e-12                             1.000000\n",
       "3             7.746588e-01                             0.225341\n",
       "4             2.671231e-02                             0.973288\n",
       "..                     ...                                  ...\n",
       "590           3.122591e-01                             0.687741\n",
       "591           2.246366e-01                             0.775363\n",
       "592           6.589257e-01                             0.341074\n",
       "593           1.415237e-02                             0.985848\n",
       "594           9.941242e-01                             0.005876\n",
       "\n",
       "[595 rows x 2 columns]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pred = model.predict(X_test)\n",
    "prediction = pd.DataFrame(y_pred, columns=target.columns)\n",
    "prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0      Food consumption: plate, dish, bowl\n",
       "1                    Consumption: drinking\n",
       "2      Food consumption: plate, dish, bowl\n",
       "3                    Consumption: drinking\n",
       "4      Food consumption: plate, dish, bowl\n",
       "                      ...                 \n",
       "590    Food consumption: plate, dish, bowl\n",
       "591    Food consumption: plate, dish, bowl\n",
       "592                  Consumption: drinking\n",
       "593    Food consumption: plate, dish, bowl\n",
       "594                  Consumption: drinking\n",
       "Length: 595, dtype: category\n",
       "Categories (2, object): ['Consumption: drinking', 'Food consumption: plate, dish, bowl']"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predicted_classification = prediction.idxmax(axis=\"columns\")\n",
    "predicted_classification"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create confusion matrix to visually inspect results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[160   8]\n",
      " [ 19 408]]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "true_classification = y_test.idxmax(axis=\"columns\")\n",
    "\n",
    "matrix = confusion_matrix(true_classification, predicted_classification)\n",
    "print(matrix)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Convert to a pandas dataframe\n",
    "confusion_df = pd.DataFrame(matrix, index=y_test.columns.values, columns=y_test.columns.values)\n",
    "\n",
    "# Set the names of the x and y axis, this helps with the readability of the heatmap.\n",
    "confusion_df.index.name = 'True Label'\n",
    "confusion_df.columns.name = 'Predicted Label'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: xlabel='Predicted Label', ylabel='True Label'>"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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a/z48ZJufWjs2LGjevbsqYiICG3cuFHt2rWTNY1j8SZPnqw6depoz549atmypbp27apu3bqpS5cu2r17t0qWLKlu3brZnffatWsaO3asvvjiC23evFlxcXF64YUXJEkdOnTQoEGDVL58eUVHRys6OjrF65Kkq1evqmnTpsqTJ4927Nih77//XuvWrVO/fv3sjgsLC9Px48cVFhamefPmae7cuUbBId36wF2sWLH7vsYePXro1KlTCgsL08KFC/XJJ58oNjY2xXGjRo1S27ZtdeDAAfXs2fOu57p27ZomTJigL7/8Ups2bVJUVJQGDx5812M3bNigZ555RmPHjtXQoUPvme9Br7Fbt27666+/tHHjRi1atEj/93//d9f8yDxFn6mqs/tPqlKfZ9Vl51R12PShag/vqGw5cxjHlGr7pKoPCtaOD77Xdw2Gasf736nGkGCVef7p+5z53nyrltafv/xm13Y6/IB8qpa653OcPdwkSTfirj7UNYGMtnXbTjVs8JRKly4hSapYMUB1nqypVavDTE6GTGFNTp/tEcUQIwdx7NgxWa1WlStX7r7HrV+/XgcOHNDJkydVuHBhSdIXX3yh8uXLa8eOHapRo4akW4XE3LlzlTt3bklS165dtX79eo0dO1bR0dFKTExUu3btVLRoUUlSYGBgmjO3aNFCr7zyiiRp5MiRmjFjhmrUqKH//Oc/kqShQ4cqKChIZ86cMYbbJCQkaNq0aapVq5Ykad68efL399f27dtVs2ZNubu7K3v27PcdnrNgwQLduHFDX3zxhVFMTZs2Ta1atdL7778vX19fSVKePHk0bdo0ZcuWTeXKlVPLli21fv169e7dW5KUL18+lSxZ8p7XOXLkiH766Sdt377deF/nzJkjf3//FMd26tRJL774ovH4xIkTKY5JSEjQzJkzjWv269dPY8aMSXHckiVL1K1bN82ePfuuBZKt+73Gw4cPa926ddqxY4eqV68uSZo9e7ZKly5933MiY3kU9ZFfjTJKik/Q6pemKKd3bj09tody5smtjYP+T5JUfVCwtr67QCd/utUr8feps/Iq/YT8uzTQkYU/p/marj6eunb2kl3btXOX5OLhpmw5cyjpxh09axaLnhzVRdHbI3Ux8vTDvVAgg73/wTR5eLjrtwPhSkpKUrZs2TRi5Pv6+uslZkdDZniEv/1PDxQIDiK1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ixZp3rx52r17t0qVKqWmTZvqwoULkqRTp06pXbt2atWqlfbu3auXXnpJb7311n2vm5ycrObNm2vz5s366quvdOjQIY0fP94oWnbt2qX27dvrhRde0IEDBzRq1CiNGDFCc+fOtTvPxIkTjQ+Ir732mvr06WN8sJs6daqWLVum7777TpGRkZo/f76KFSuW5vdo1KhRmjZtmrZs2aJTp06pffv2mjJlihYsWKAVK1ZozZo1+vjjj+2eM2/ePGXPnl3bt2/XRx99pEmTJmn27NmSpMWLF6tQoUIaM2aM0ZtzN0uWLNGAAQM0aNAgHTx4UK+88opefPFFhYWF2R03evRotW/fXvv371eLFi3UuXNn43cj3SqkRo0a9cDXOWTIEE2cOFE7duxQ/vz51apVKyUkJNz12CtXrqhFixZav3699uzZo2bNmqlVq1aKioq672s8fvy4mjVrpuDgYO3fv1/ffvutfvnlF/Xr1++B+Wyv/eyzzyogIEC7du3SqFGjNHjw4Ps+p2/fvoqPj9emTZt04MABvf/++3J3t/+H7u2339bEiRO1c+dOZc+eXT179kx1ptvu93uXbg3327lzp5YtW6atW7fKarWqRYsWSkhIkMViUd26dY0C9eLFi4qIiND169d1+PBhSbeK+Ro1asjNzS3N2ZC1uLg4S7r17eZtVqtV8TdvKiioulmxgBTemzhddYNqKKhGlXQ536wvv9WyVes1ckh//fDVTHVr31ZvjflQO/bsf6jz7fstQkHVK9u1PVmrmvb9FnHP51y5ck0Wi0W5c+d6qGsi/VjT6X+PKtNXMVq+fLndB6LmzZvr+++/1yeffKLChQtr2rRpslgsKleunP766y8NHTpUI0eO1PXr1zVjxgzNnTtXzZs3lyTNmjVLa9eu1Zw5czRkyBDjW+7b3/CXLVvW+BB2L+vWrdP27dsVERGhMmXKSJJKlChh7J80aZIaNWqkESNGSJLKlCmjQ4cO6cMPP1SPHj2M41q0aKHXXntNkjR06FBNnjxZYWFhKlu2rKKiolS6dGk99dRTslgsKlq06EO9d++9957q1KkjSerVq5eGDRum48ePG3mff/55hYWFaejQocZzChcurMmTJ8tisRjvx+TJk9W7d295e3srW7Zsyp07t/z8/O553QkTJqhHjx7G6wsJCdG2bds0YcIENWjQwDiuR48e6tix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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.heatmap(confusion_df, annot=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.save('my_csvclass_model.keras')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "19/19 [==============================] - 0s 1ms/step\n",
      "0      Food consumption: plate, dish, bowl\n",
      "1                    Consumption: drinking\n",
      "2      Food consumption: plate, dish, bowl\n",
      "3                    Consumption: drinking\n",
      "4      Food consumption: plate, dish, bowl\n",
      "                      ...                 \n",
      "590    Food consumption: plate, dish, bowl\n",
      "591    Food consumption: plate, dish, bowl\n",
      "592                  Consumption: drinking\n",
      "593    Food consumption: plate, dish, bowl\n",
      "594                  Consumption: drinking\n",
      "Length: 595, dtype: category\n",
      "Categories (2, object): ['Consumption: drinking', 'Food consumption: plate, dish, bowl']\n"
     ]
    }
   ],
   "source": [
    "pretrained_model = keras.models.load_model('my_csvclass_model.keras')\n",
    "y_pretrained_pred = pretrained_model.predict(X_test)\n",
    "pretrained_prediction = pd.DataFrame(y_pretrained_pred, columns=target.columns.values)\n",
    "\n",
    "# idxmax will select the column for each row with the highest value\n",
    "pretrained_predicted_class = pretrained_prediction.idxmax(axis=\"columns\")\n",
    "print(pretrained_predicted_class)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
